#include<iostream>
#include<string>
#include<map>
using namespace std;
int n;
string s;
map<string, int>mp;
//bool check(int mid)
//{
//	//unordered_set<string>hash;
//	for (int i = 0; i + mid - 1 < n; i++) {
//		string ans = s.substr(i, mid);
//		if (hash.count(s))return 0;
//		hash.insert(s);
//	}
//	return 1;
//}
bool check(int mid)
{
	mp.clear();
	for (int i = 0; i + mid - 1 < n; i++) {
		string ans = s.substr(i, mid);
		if (mp[ans])return 0;
		mp[ans] = 1;
	}
	return 1;
}
int main()
{
	cin >> n;
	cin >> s;
	int l = 1, r = n;
	while (l < r) {
		int mid = l + r >> 1;
		if (check(mid)) {
			r = mid;
		}
		else {
			l = mid + 1;
		}
	}
	cout << l << endl;
	return 0;
}